package com.enzoism.springboot.dive.bis.iterator;

import java.util.Objects;
import java.util.function.Consumer;

/**
 * 【原生】原生的遍历接口
 * @param <E> 泛型
 */
public interface Iterator<E> {
    // 是否还有下一个元素
    boolean hasNext();
    // 下一个元素
    E next();
    // default：即不加任何访问修饰符，通常称为“默认访问权限“或者“包访问权限”。该模式下，只允许在同一个包中进行访问
    // 进行对象移除
    default void remove() {
        throw new UnsupportedOperationException("remove");
    }
    // 对剩余元素进行遍历
    default void forEachRemaining(Consumer<? super E> action) {
        Objects.requireNonNull(action);
        while (hasNext())
            action.accept(next());
    }
}
